home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
05
/
4
/
DISK0543.ZIP
/
HALLEY.BAS
< prev
next >
Wrap
BASIC Source File
|
1985-06-02
|
6KB
|
216 lines
10 REM -----------COMET EPHEMERIS -----------
20 PI = 3.14159
30 CO$ = "COMET HALLEY"
40 PH = 1986.11
50 PL = 170.011
60 AN = 58.1453
70 PY = 76.0081
80 SM = 17.9435
90 EO = .967267
100 IO = 162.239
110 CLS:PRINT :PRINT :PRINT
120 REM ----------------------------------------
130 PRINT " ";CO$
140 PRINT "- - - - - - - - - - - - - - - - - - -"
150 PRINT " EPHEMERIS FOR DATES"
160 PRINT " BETWEEN 1946 AND 2026"
170 PRINT " BY ROGER BROWNE"
180 PRINT " THIS VERSION FROM ASTRONOMY MAGAZINE"
190 PRINT " FEBRUARY, 1985 "
200 PRINT " COPIED BY CHRIS SPRATT (IHW)"
210 PRINT " VICTORIA, BC (JUNE,1985)"
220 REM ________________________________________
230 REM INPUT THE DATE
240 REM ----------------------------------------
250 PRINT "INPUT YEAR"
260 INPUT Y
270 IF Y < 1946 OR Y > 2026 THEN GOTO 250
280 PRINT "INPUT MONTH"
290 INPUT M
300 IF M < 1 OR M > 12 THEN GOTO 280
310 PRINT "INPUT DAY"
320 INPUT D
330 PRINT
340 REM ----------------------------------------
350 REM CALCULATION FOR THE COMET
360 REM ----------------------------------------
370 X = PH
380 IF Y >= 1986 THEN Z = 1984
390 IF Y < 1986 THEN Z = 1988
400 IF Y > = 1986 THEN S = 0
410 IF Y < 1986 THEN S = 1
420 GOSUB 1840
430 DS = N
440 B = (360/PY)*(N/365.25)
450 K = B
460 GOSUB 1990
470 B = (K*PI)/180
480 E = B
490 Y1 = EO
500 Q = E-(Y1*SIN(E))-B
510 IF ABS(Q) <=.000017 THEN GOTO 550
520 U = Q/(1-(Y1*COS(E)))
530 E = E-U
540 GOTO 500
550 V = (SQR((1+Y1)/(1-Y1))*TAN(E/2))
560 V = 2*ATN(V)
570 V1 = (V*180)/PI
580 L = V1 + PL
590 R = SM*(1-(Y1*Y1))/(1+Y1*COS(V))
600 F = L -AN
610 F2 = IO
620 F1 = (F*PI)/180
630 F2 = (F2*PI)/180
640 I = (SIN(F1)*SIN(F2))
650 I = ATN(I/SQR(-I*I+1))
660 P = ATN(TAN(F1)*COS(F2))
670 P1 = (P*180)/PI + AN
680 IF F >=90 AND F <=270 THEN P1 = P1 +180
690 IF P1 < 0 THEN P1 = P1 + 360
700 P = (P1 * PI)/180
710 R2 = R*COS(I)
720 REM --------------------------------------
730 REM CALCULATIONS FOR THE EARTH
740 REM --------------------------------------
750 X = 1975
760 IF Y >= X THEN Z = 1972
770 IF Y<X THEN Z = 1976
780 IF Y>=X THEN S =0
790 IF Y < X THEN S = 1
800 GOSUB 1840
810 T = (360/365.25)*(N/1.00004)
820 K = T
830 GOSUB 1990
840 T = K
850 T1 = (T*PI)/180
860 C = .01672
870 J = T +(360/PI)*C*SIN(T1 - .051943)
880 J = J + 99.5343
890 IF J > 360 THEN J = J - 360
900 IF J < 0 THEN J = J + 360
910 H =((J - 102.51044#)*PI)/180
920 R1 = (1-C*C)/(1+C*COS(H))
930 REM ----------------------------------
940 REM COMPUTE ECLIPTIC COORDINATES
950 REM ----------------------------------
960 U1 = ((P1-J)*PI)/180
970 U2 = ((J - P1)*PI)/180
980 IF R2 < R1 THEN GOTO 1040
990 Q1 = (R1 * SIN(U1))
1000 Q1 = Q1/(R2-(R1*COS(U1)))
1010 Q1 = ATN(Q1)
1020 Q2 = (Q1*180)/PI+P1
1030 GOTO 1080
1040 Q3 = (R2 *SIN(U2))
1050 Q3 = Q3/(R1 - (R2*COS(U2)))
1060 Q3 = ATN(Q3)
1070 Q2 = (Q3 * 180)/PI + J + 180
1080 IF Q2 > 360 THEN Q2 = Q2 - 360
1090 IF Q2 < 0 THEN Q2 = Q2 + 360
1100 Q4 = (Q2 * PI)/180
1110 Q5 = (R2 * TAN(I)*SIN(Q4-P))
1120 Q5 = Q5/(R1*SIN(U1))
1130 Q5 = ATN(Q5)
1140 REM -----------------------------------
1150 REM CONVERT TO EQUATORIAL COORDS
1160 REM -----------------------------------
1170 E1 = .40893064#
1180 L1 = (SIN(Q5)*COS(E1))
1190 L1 = L1 + (COS(Q5) * SIN(E1)*SIN(Q4))
1200 M1 = ATN(L1/SQR(-L1*L1+1))
1210 Y2 = (M1 * 180)/PI
1220 B1 = (TAN(Q4)*COS(E1))
1230 B1 = B1 - ((TAN(Q5)*SIN(E1))/COS(Q4))
1240 G = ATN(B1)
1250 H1 = (G*180)/PI
1260 I1 = INT(Q2/90)
1270 J1 = INT(H1/90)
1280 IF I1 - J1 = 4 OR I1 - J1 = 1 THEN H1 = H1 + 360
1290 IF I1 - J1 = 2 OR I1 - J1 = 3 THEN H1 = H1 + 180
1300 IF I1 - J1 = -4 THEN H1 = H1 + 360
1310 IF I1 - J1 = -2 THEN H1 = H1 - 180
1320 N1 = H1/15
1330 W = INT((N1 - INT(N1))*60 + .5)
1340 IF W = 60 THEN N1 = N1 + 1
1350 IF W = 60 THEN W = 0
1360 K1 = ABS(Y2)
1370 W1 = INT((K1-INT(K1))*60 + .5)
1380 IF W1 = 60 THEN G1 = G1 + 1
1390 IF W1 = 60 THEN W1 = 0
1400 G1 = INT(K1)
1410 IF Y2<0 AND G1<1 THEN W1 = -W1
1420 D1 = R1 * R1 + R2 * R2
1430 D1 = D1 - (2 *R1*R2*COS(U1))
1440 D2 = SQR(D1)
1450 R3 = D2/COS(I)
1460 K9 = R
1470 GOSUB 2100
1480 R = K9
1490 K9 = R3/10
1500 GOSUB 2100
1510 R3 = K9 * 10
1520 M0 = 4.1 : N = 3.1
1530 IF DS < 0 THEN M0 = 5 : N = 4.44
1540 MA = M0 + 5 * .4343* LOG(R3)
1550 MA = MA + N * 2.5 * .4343 * LOG(R)
1560 MA = (INT(10*MA))/10
1570 IF Y2 < 0 THEN G1 = -G1
1580 REM -----------------------------------
1590 REM PRINT EPHEMERIS FOR DATE
1600 REM -----------------------------------
1610 CLS:PRINT :PRINT :PRINT
1620 PRINT " -----------------------------------"
1630 PRINT " DATA FOR "+CO$
1640 PRINT " DATE: M/D/Y = ";M;"/";D;"/";Y
1650 PRINT " DAYS TO PERIHELION ";INT(DS)
1660 PRINT
1670 PRINT "COORDINATES:"
1680 PRINT " RA:"; INT(N1); "HRS";W; "MIN"
1690 PRINT "DEC:";G1;"DEG";W1;"MIN"
1700 PRINT
1710 PRINT "DISTANCES"
1720 PRINT " COMET TO SUN"; R; "AU"
1730 PRINT " COMET TO EARTH";R3; "AU"
1740 PRINT
1750 PRINT "PREDICTED MAG";MA
1760 PRINT "------------------------------------"
1770 PRINT "PRESS 0 FOR ANOTHER DATE OR 1 TO EXIT"
1780 IF INKEY$ = "0" THEN GOTO 1800
1785 IF INKEY$ = "1" THEN GOTO 2140
1790 GOTO 1780
1800 PRINT
1810 GOTO 250
1820 REM -----------------------------------------
1830 REM SUBROUTINE: DAYS TO PERIHELION
1840 A = (Y-Z)/4
1850 A1 = INT(A + S)
1860 N = 365*(Y-X+S)+A1
1870 IF INT(A) <> A THEN GOTO 1890
1880 IF (M2 = 2 AND D<29) OR M = 1 THEN N = N - 1
1890 IF M > 2 THEN GOTO 1930
1900 M2 = M - 1
1910 M2 = 31 * M2
1920 GOTO 1950
1930 M2 = M + 1
1940 M2 = INT(30.6*M2)-63
1950 N = N+M2+D-365*S
1960 RETURN
1970 REM ------------------------------------------
1980 REM: PLACE BETWEEN 0 AND 360 DEG
1990 IF K < 0 THEN GOTO 2010
2000 IF K > 360 THEN GOTO 2040
2010 K = K + 360
2020 IF K>= 0 THEN GOTO 2070
2030 GOTO 2010
2040 K = K - 360
2050 IF K<= 360 THEN GOTO 2070
2060 GOTO 2040
2070 RETURN
2080 REM ------------------------------------------
2090 REM: ROUND OFF SUBROUTINE
2100 K9 = K9 * 1000
2110 K9 = INT(K9 + .5)
2120 K9 = K9/1000
2130 RETURN
2140 END